package list.linkedlist;

import custom_class.Person;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;

/**
 * @author wenyuan
 * @version 1.0
 * @date 2023/7/18
 * @since 8
 */
public class TLinkedList {

    private static LinkedList<Object> linkedList1 = new LinkedList<>();

    public static void main(String[] args) {
        isPermittedAllType();       // 1. 是否支持所有类型
        lookupDetail();     // 2. 更多的细节
    }

    /**
     * 支持所有类型
     * 这是一个双端列表
     */
    private static void isPermittedAllType(){
        linkedList1.add(0, 1);
        linkedList1.add(1, 13.21);
        linkedList1.add(2, "你好！");
        linkedList1.add(3, new Person(175, 62, 21, "男"));
        // System.out.println(linkedList1);
    }

    /**
     * 更多的细节
     */
    private static void lookupDetail(){
        // 1. offer是将元素插入链表尾部
        linkedList1.offer("what is offer, please show me");
        System.out.println(linkedList1);

        // 2. 符合链表
        Object first = linkedList1.getFirst();
        Object last = linkedList1.getLast();
        System.out.println("列表首" + first + " 列表尾" + last);

        // 3. isEmpty并不会判断是不是空格
        System.out.println("链表" + (linkedList1.isEmpty() ? "是空的" : "不是空的"));

        // 4. 等同于 getFirst 真正的等同
        System.out.println("element is " + linkedList1.element());

        // 5. 删除未再指定集合中的元素（保持在指定集合中的元素）
        linkedList1.retainAll(Collections.EMPTY_LIST);
        System.out.println("剩余的元素" + linkedList1);
        System.out.println("链表" + (linkedList1.isEmpty() ? "是空的" : "不是空的"));

        // 5. 清除所有元素，并且链表为空
        linkedList1.clear();
    }
}
